/**
 * 打怪
 *
 * 题目描述
 * 你是一个勇士，现在你准备去森林刷毛球怪，你有两个属性（血量，攻击力），毛球怪也有这两个属性。
 * 当你遭遇一只毛球怪时你们会进入战斗，然后你和毛球怪轮流攻击（你先手），每次使对方的血量减去自
 * 己攻击力的数值，当一方的血量小于等于 0 时死亡。现在你想知道在自己活着的前提下最多杀死几只毛球怪。
 *
 * 输入描述:
 * 第一行一个正整数t，代表测试数据组数。
 * 第二行四个正整数h，a，H，A，代表你的血量和攻击力以及毛球怪的血量和攻击力。
 * 所有整数大小不超过1000。
 *
 * 输出描述:
 *  共 t 行，每行一个整数x，代表最多能杀死多少毛球怪。如果能杀死无数只，输出-1。
 */

import java.util.Scanner;

/**
 * 这里要是攻击力要是大于小怪的生命值就永远不会死, 返回 -1
 * 剩下的我们可以算出打死一只小怪, 小怪对咱的攻击次数, 乘以
 * 攻击力就是对你的伤害, 然后用咱的生命去算可以最多打死几只小怪
 * 时间复杂度 : O(n)
 * 空间复杂度 : O(1)
 */

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        // 测试组数
        int t = in.nextInt();
        while (t-- != 0) {

            int h = in.nextInt(), a = in.nextInt();
            int H = in.nextInt(), A = in.nextInt();

            if (a >= H) {

                // 攻击力大于 生命值, 返回 -1
                System.out.println(-1);
            } else {

                // k 是攻击几次可以杀死小怪
                int k = H / a;

                // 这里要注意余数是否为 零
                // 要是不为零, 还要进行补刀
                if (H % a != 0) {

                    // 进行补刀
                    k += 1;
                }

                // 这里是 小怪对你造成的伤害
                // 这里由于是你咱先手攻击, 所以小怪的在进行最后一次攻击时,
                // 就已经死亡, 所以减 1
                int hurt = (k - 1) * A;

                // 这里是最终咱能杀死的小怪数量
                int res = h / hurt;

                // 因为我们要保证自身不能死亡, 所以在最后一只小怪的时候
                // 就需要撤退了
                if (h % hurt == 0) {

                    // 要是打完正好空血, 提撤退
                    res -= 1;
                }

                // 返回结果
                System.out.println(res);
            }
        }
    }
}